home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1996-02-05 | 13.8 KB | 541 lines |
- Hide
- 'Dload "ST-00:Modules/mod.cyberotica",-3
- 'Bank Name 3,"Cyberoti"
- 'Dload "ST-00:modules/Mod.sequential",-4
- 'Bank Name 4,"Sequenti"
- Extension_8_10F2 0
- Extension_8_108E 3
- Clear Key
- SNOW
- Clear Key
- STAR
- Clear Key
- GAME
- Clear Key
- TEXPAGE
- For A=64 To 0 Step -1 : Extension_8_10C6 A : Wait Vbl : Next
- Extension_8_10A8
- Extension_8_10C6 64
- Extension_8_108E 4
- Clear Key
- FINALSCROLLER
- For A=64 To 0 Step -1 : Extension_8_10C6 A : Wait Vbl : Next
- Extension_8_10A8
- End
- Procedure TEXPAGE
- Dim LD(7,3)
- Reserve As Work 12,4+32*3
- ST=Start(12)
- Doke ST,1
- Doke ST+2,2
- Extension_8_0A24 12
- Screen Open 0,320,256,16,0
- Curs Off : Flash Off : Paper 0 : Pen 1 : Cls
- Get Block 1,0,0,16,16
- For A=0 To 7
- C=Deek(Start(13)+32+A*2)
- Colour A,C
- Colour A+8, Extension_8_0EFC(C,$444,0 To $FFF)
- Next
- Rem 01234567890123456789
- T$="AHH DU HAST DAS ENDE"
- T$=T$+"ERREICHT? COOL :) "
- T$=T$+" "
- T$=T$+"WIE GEHTS DENN SO? "
- T$=T$+"ALSO MIR GEHTS WIE- "
- T$=T$+"DER EIN WENIG BESSER"
- T$=T$+"WENN DU VERSTEHST, "
- T$=T$+"WAS ICH MEINE :) "
- T$=T$+" "
- T$=T$+"ICH WERD WOHL WIEDER"
- T$=T$+"HAEUFIGER BEI DER AW"
- T$=T$+"CALLEN... "
- T$=T$+" "
- T$=T$+"MACHEN WIR MIT EINEM"
- T$=T$+"KLEINEN GEDICHT WEI-"
- T$=T$+"TER... "
- T$=T$+"NUN HAST DU WIEDER "
- T$=T$+" EINE POSTDISK"
- T$=T$+"LANGE ZEIT HAT ES "
- T$=T$+" GEBRAUCHT"
- T$=T$+"GLAUBST DU DASS MICH"
- T$=T$+" DEINE KATZE FRISST?"
- T$=T$+"DES HAETTE MICH GE- "
- T$=T$+" SCHLAUCHT!"
- T$=T$+" "
- T$=T$+"ICH WUENSCHE DIR EIN"
- T$=T$+" FROHES FEST!"
- T$=T$+"TOUT A COUP AND ALL "
- T$=T$+" THE BEST!"
- T$=T$+"SCHOENES NEUES JAHR!"
- T$=T$+"ES WIRD ALLES "
- T$=T$+" WUNDERBAR!"
- T$=T$+"ICH MERK SCHON, ICH "
- T$=T$+"BIN HEUTE NICHT GUT "
- T$=T$+"DRAUF... SCHADE :( "
- T$=T$+" "
- T$=T$+"HAST DU EIGENTLICH "
- T$=T$+"IMMER NOCH DIESE "
- T$=T$+"PROBLEME MIT DEINEN "
- T$=T$+"FESTPLATTEN??? "
- T$=T$+" "
- T$=T$+"MIA FAELLT NIX MEHR "
- T$=T$+"EIN... ICH BIN EIN "
- T$=T$+"SCHWEIN... CIAO... "
- T$=T$+" "
- T$=T$+"DRUECK NE TASTE... "
- T$=T$+" "
- T$=T$+" "
- T$=T$+" "
- T$=T$+" "
- T$=T$+" "
- T$=T$+" "
- T$=T$+" IMMER NOCH DA??? "
- T$=T$+" "
- T$=T$+" "
- T$=T$+" "
- T$=T$+" "
- T$=T$+"DUMDIDUM... "
- T$=T$+" "
- T$=T$+"ICH HASSE DIESE ZOOM"
- T$=T$+"ROUTINE, DIE IS SOOO"
- T$=T$+"LAHM :((( "
- T$=T$+" "
- T$=T$+"TEXT RESTARTS... "
- X=0 : Y=0 : LD=0 : BL=1 : T=0 : PT=1 : WAI=0
- Double Buffer
- Autoback 0
- Repeat
- Screen Swap : Wait Vbl
- C=0
- For A=0 To 7
- If LD(A,2)
- Extension_8_0A36 LD(A,0)/16,LD(A,1)/16,0
- LETZOOM[LD(A,2)-32,LD(A,0),LD(A,1),Min(LD(A,3),16)]
- Inc LD(A,3) : Inc C
- End If
- Next
- If C=0 and PT=0
- Inc WAI
- If WAI=261
- WAI=0 : PT=1
- Fade 2
- Extension_8_121C 0,0 : Extension_8_121C 0,1 : Extension_8_121C 0,2 : Extension_8_121C 0,3
- Screen Swap
- Extension_8_121C 0,0 : Extension_8_121C 0,1 : Extension_8_121C 0,2 : Extension_8_121C 0,3
- Wait 32
- For A=0 To 7
- C=Deek(Start(13)+32+A*2)
- Colour A,C
- Colour A+8, Extension_8_0EFC(C,$444,0 To $FFF)
- Next
- End If
- If WAI>200
- Extension_8_121C 0,3 : Extension_8_1258
- Extension_8_1372 160,128,(WAI-199)*2,3 : Extension_8_1042 0,3
- If WAI=248
- Fade 1,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF,$FFF
- End If
- End If
- End If
- T=1-T
- If T=0
- If PT
- LD(LD,0)=X+8 : LD(LD,1)=Y+8
- LD(LD,2)=Asc(Mid$(T$,BL,1))
- If LD(LD,2)=32
- LD(LD,2)=0
- End If
- LD(LD,3)=2
- Add X,16
- If X=320
- X=0
- Add Y,16
- If Y=256
- Y=0 : PT=0 : WAI=0
- End If
- End If
- Add BL,1,1 To Len(T$)
- Else
- LD(LD,2)=0
- End If
- Add LD,1,0 To 7
- End If
- Until Inkey$<>""
- Fade 2 : Wait 32
- Screen Close 0
- Erase 12
- End Proc
- Procedure SNOW
- Dim SNOW(50,2)
- Unpack 15 To 0
- For A=0 To 15 : Colour A,0 : Next
- For A=0 To 500
- Extension_8_0388 Rnd(319),Rnd(299),Rnd(1)+1
- Next
- For A=0 To 49
- SNOW(A,0)=Rnd(319)
- SNOW(A,1)=Rnd(312)
- SNOW(A,2)= Extension_8_039E(SNOW(A,0),SNOW(A,1))
- Next
- Repeat
- Multi Wait
- Until Extension_8_10B6
- Fade 10,0,$99F,$554,$FD0,$EA0,$D61,$800,$411,$35A,$238,$118,$15,$4,$3,$225,$36
- SY=0 : Y=312*256 : T=0 : SNOW=1
- Repeat
- PT= Extension_8_10B6
- If PT=1 Then T=1
- If T Then Inc T
- If T>0
- D=Max(Y-T*1024,0)-Y
- Add SY,(D-SY*64)/64
- Add Y,SY
- Screen Offset 0,0,Y/256
- End If
- If PT=2 Then Fade 10,,,,,,,,,,,,,,,,0
- Wait Vbl
- If SNOW
- C=0
- For A=0 To 49
- XX=SNOW(A,0) : YY=SNOW(A,1)
- If YY-200<Y/256
- C=1
- Extension_8_0388 XX,YY,SNOW(A,2)
- Add SNOW(A,0),Rnd(4)-2
- Inc SNOW(A,1)
- P= Extension_8_039E(SNOW(A,0),YY+1)
- If P<>1 and P<>2 : SNOW(A,2)=P : End If
- Extension_8_0388 SNOW(A,0),YY+1,Rnd(1)+1
- End If
- Next
- If C=0 : SNOW=0 : End If
- End If
- Until PT=3
- Fade 1 : Wait 16
- Screen Close 0
- End Proc
- Procedure STAR
- Screen Open 0,224,128,32,0
- Curs Off : Flash Off : Paper 0 : Pen 1 : Cls 0
- Screen Display 0,128,50,224,128
- Double Buffer
- For A=0 To 31
- C=0
- If A and 1 Then Add C,$330
- If A and 2 Then Add C,$330
- If A and 4 Then Add C,$330
- If A and 8 Then Add C,$330
- If A and 16 Then Add C,$330
- Colour A,C
- Next
- X=-25600 : Y=64 : BP=1
- R=64
- WW=0 : SX=0 : DC=0
- Repeat
- Add BP,BP,1 To 16
- Extension_8_121C 0, Extension_8_0506(BP)
- Add W,4
- D=40960-X
- Add SX,(D-SX*16)/16
- Add X,SX
- If Extension_8_10B6 =$1 Then DC=1
- If DC=1 and R>2 Then Dec R
- S=0
- For A=0 To 1024 Step 64
- If S
- DX= Extension_8_1114(A+W,R)
- DY= Extension_8_1106(A+W,R)
- S=0
- Else
- DX= Extension_8_1114(A+W,R/3)
- DY= Extension_8_1106(A+W,R/3)
- S=1
- End If
- If A
- Extension_8_1030 OX,OY To(X/256)+DX,Y+DY,BP,-BP
- End If
- OX=(X/256)+DX : OY=Y+DY
- Next
- Extension_8_1042 0, Extension_8_0506(BP)
- Screen Swap : Wait Vbl
- Until R=2
- Screen Close 0
- End Proc
- Procedure GAME
- ' Load Iff "dh2:amosgfx/gamedisk1/explosion",0
- ' For A=0 To 22
- ' Get Sprite A+9,(A mod 20)*16,(A/20)*16 To(A mod 20)*16+16,(A/20)*16+16
- ' Hot Spot A+9,7,7
- ' Next
- ' Imploder Load "PostDisk.ptl",9
- ' Bank Permanent 9
- Screen Open 0,704,256,16,0
- Curs Off : Flash Off : Paper 0 : Pen 1 : Cls
- For A=0 To 15 : Colour A,0 : Next
- Screen Display 0,144,40,304,256
- Extension_8_0A24 9
- ' Dload "PostDiskBlocks.map",10
- ' Bank Name 10,"Map"
- Make Mask
- ST=Start(10)+4
- Z$="ABCDEFGHIJKLMNOPQRSTUVWXYZ?!:,."
- T$=" HALLO MARKUS! WILLKOMMEN ZUR POSTDISK "
- T$=T$+"ZU WEIHNACHTEN... NACHDEM ICH DIR SOOO LANGE KEINE MEHR GESCHRIE"
- T$=T$+"BEN HABE, WOLLTE ICH MAL WAS GAAANZ ANDERES MACHEN... VIEL SPASS BEIM "
- T$=T$+"SPIELEN..."
- For X=0 To Len(T$)-1
- P=Instr(Z$,Mid$(T$,X+1,1))+208
- If P=208 Then P=0
- Poke ST+X+512,P
- Next
- For X=0 To 21
- For Y=0 To 15
- Extension_8_0A36 X,Y,Peek(ST+X+Y*512)
- Next
- Next
- Set Rainbow 0,15,260,"","",""
- Set Rainbow 1,15,260,"","",""
- C0=0 : C1=0 : C2=4
- For A=0 To 259
- If(A mod 10)=0 Then C2=Min(C2+1,15)
- If(A mod 12)=0 and C2=15 Then C1=Min(C1+1,15)
- If(A mod 16)=0 and C1>10 Then Inc C0
- Rain(1,A)= Extension_8_0A0E(C0,C1,C2)
- If Rain(1,Max(A-1,0))<>Rain(1,A) Then Rain(1,Max(A-2,0))=Rain(1,A)
- Next
- Screen Copy 0,0,0,352,256 To 0,352,0
- Screen Offset 0,32,0
- Wait Vbl
- Rainbow 0,0,Y Hard(0)-1,258
- Fade 2,0,$DDF,$AAD,$66B,$FE0,$B50,$620,$420,$6F,$A,$F0F,$667,$444,$F0F,$F0F,$2C
- Colour 17,$CCC : Colour 18,$68 : Colour 19,$70
- Colour 21,$FF0 : Colour 22,$D70 : Colour 23,$C00
- Colour 25,$CCC : Colour 26,$860 : Colour 27,$F00
- Colour 29,$CCC : Colour 30,$860 : Colour 31,$F00
- For A=0 To 15
- Wait Vbl : View
- Extension_8_135C 0 To 1
- Next
- BYPOS=0 : LP=0 : MX=0
- MANX=16*256 : MANY=200*256 : MANSY=0 : MANSX=0 : MANAN=0 : MANDI=0
- Dim SP(7,5),EX(1,2)
- For A=1 To 7
- SP(A,0)=(Rnd(320)+100)*256
- SP(A,1)=200*256
- SP(A,2)=Rnd(3)
- SP(A,4)=Rnd(1)
- Next
- EXL=0
- While Inkey$=""
- Wait Vbl
- Gosub EVIL
- Gosub MANCONTROL
- Gosub MAPSCROLLING
- While BUSY
- Exit If Extension_8_0338 >270
- Gosub BUILD
- Wend
- Wend
- Fade 1
- For A=0 To 15
- Extension_8_1348 0,0 : View
- Wait Vbl
- Next
- Sprite Off
- Rainbow Del
- Screen Close 0
- View : Wait Vbl
- Pop Proc
- EVIL:
- For A=0 To 1
- If EX(A,2)
- Add EX(A,2),1,0 To 23
- If EX(A,2)=23
- EX(A,2)=0 : Sprite Off A+2
- Else
- Sprite A+2,X Hard(EX(A,0)),Y Hard(EX(A,1)),EX(A,2)+8
- End If
- End If
- Next
- For A=4 To 5
- EX=((SP(A,0)/256) mod 352)+32 : EY=SP(A,1)/256
- Sprite A,X Hard(SP(A,0)/256-LP),Y Hard(EY),SP(A,2)/8+1+SP(A,3)*4
- If Extension_8_039E(EX,EY+1)=15 Then Add SP(A,4),9
- If Extension_8_039E(EX,EY-1)<15 Then SP(A,4)=-Rnd(500)*SP(A,5) : Add SP(A,1),-256
- R=(MANX-SP(A,0))/256
- C=Sprite Col(A,0 To 5)
- If R>256 or C
- EX(EXL,0)=SP(A,0)/256-LP
- EX(EXL,1)=EY-5
- EX(EXL,2)=1
- Add EXL,1,0 To 1
- SP(A,0)=(Rnd(512)-256)*256+MANX
- SP(A,1)=0
- SP(A,2)=Rnd(3)
- SP(A,4)=Rnd(1)
- End If
- Add SP(A,1),SP(A,4)
- If SP(A,1)<2560 Then SP(A,1)=2560
- If SP(A,5)
- Add SP(A,0),Sgn(R)*192
- Add SP(A,2),3,0 To 31
- Else
- R=-R
- Add SP(A,0),Sgn(R)*64
- Add SP(A,2),1,0 To 31
- End If
- If Rnd(200+SP(A,5)*200)=0 Then SP(A,5)=1-SP(A,5)
- If R=0 Then SP(A,2)=0
- If R>0 Then SP(A,3)=0
- If R<0 Then SP(A,3)=1
- Next
- Return
- BUILD:
- BP=(MX mod 352)/16
- P=Peek(ST+MX/16+22+BYPOS*512)
- Extension_8_0A36 BP+22,BYPOS,P
- Extension_8_0A36 BP,BYPOS,P
- Inc BYPOS : If BYPOS>15 Then BUSY=0 : BYPOS=0 : Add MX,16
- Return
- MAPSCROLLING:
- If LP>MX-16 Then BUSY=1
- If X>160 Then Inc LP
- If X>256 Then Inc LP
- XP=Min(LP,MX) mod 352
- Screen Offset 0,XP+32,0
- Sprite 0,X Hard(X),Y Hard(Y),(MANAN/2)+MANDI*4+1
- Return
- MANCONTROL:
- Add MANX,MANSX
- Add MANY,MANSY
- If MANY<2560 Then MANY=2560
- Add MANSY,9
- X=((MANX/256) mod 352)+32 : Y=MANY/256 : MANBO=1
- If Extension_8_039E(X,Y-1)<15 and MANBO=1 Then Add MANY,-256
- If Extension_8_039E(X,Y)<15 and MANSY=>0
- MANSY=0
- For A=1 To 4
- If Extension_8_039E(X,Y-A-1)=15
- MANY=((MANY-A*256) and $FFFF00)+255
- Add Y,-A
- Exit
- End If
- Next
- MANBO=1
- If A=5
- MANSX=-MANSX : Add MANX,MANSX
- End If
- Else
- MANBO=0
- If Extension_8_039E(X,Y+1)<15 : Inc Y : Add MANY,256 : End If
- For A=1 To 4
- Exit If Extension_8_039E(X,Y-A)=15
- Next
- If A=5
- MANSX=-MANSX : Add MANX,MANSX
- End If
- End If
- MANSX=0
- X=(MANX/256)-LP
- If Jleft(1) and X>16 Then MANSX=-256 : MANDI=1
- If Jright(1) Then MANSX=256 : MANDI=0
- If Jup(1) and MANBO=1 Then MANSY=-500
- If MANSX<>0
- Add MANAN,1,0 To 7
- Else
- MANAN=0
- End If
- Return
- End Proc
- Procedure FINALSCROLLER
- 'Load Iff "dh2:dpaint/multifonts/16x16x04-Modern",0
- 'Spack 0 To 16
- Unpack 16 To 0 : Screen Hide
- For A=0 To 58
- Get Block A+1,(A mod 20)*16,(A/20)*16,16,16
- Next
- Screen Open 0,352,576,4,0
- Curs Off : Flash Off : Paper 0 : Pen 1 : Cls
- Palette 0,$FFF,$999,$555
- Screen Display 0,104,40,352,256
- YPOS=0
- Screen Offset 0,0,YPOS+24
- T$="DIES IST DAS ENDE$$DER POSTDISK$$WEIHNACHTEN 94$$$$ICH HOFFE ES HAT DIR$"
- T$=T$+"GEFALLEN UND WUENSCHE$DIR NOCHMALS EIN$FROHES WEIHNACHTSFEST$$$"
- T$=T$+"ICH GEBE ZU,$DASS SIE DIESMAL$NICHT GANZ SO$UMFANGREICH WAR$WIE SONST IMMER,$"
- T$=T$+"ABER ICH DENKE,$DASS DAS DICH$NICHT STOEREN WIRD!$$DENN DIE NAECHSTE$"
- T$=T$+"POSTDISK KOMMT$GARANTIERT!$$$$$WAS GIBTS NOCH$SO ZU SAGEN?$$ACH JA,$"
- T$=T$+"VERGISS NICHT, MICH$MAL ZU VOICEN ;-)$ABER DANN LEGST$*DU*$AUF!$$$$$$"
- T$=T$+"IST DIR EIGENTLICH$AUFGEFALLEN, WIE$SUPERSOFT DIESER$SCROLLER SCROLLT?$$$"
- T$=T$+"IST WIEDER SO$EIN INTERLACE TRICK!$$$$$$$$DU KANNST JEDERZEIT$DEN SOURCECODE$"
- T$=T$+"DES DEMOS HABEN,$WENN DU WILLST :-)$$$$$$$"
- T$=T$+"ALSO DANN$$BIS IRGENDWANN MAL$$$CHRIS$$$$$"
- T$=T$+"* CREDITS *$-----------$"
- T$=T$+"CODE : CHRIS HODGES $"
- T$=T$+"MUSIC: CLAWZ/COMPLEX $"
- T$=T$+" MR.MAN/ANDROM.$"
- T$=T$+"GFX : RIPPED $$$$$$$$$$$"
- T$=T$+"THE END$$$$$$$$$$"
- Set Rainbow 0,0,16,"","",""
- For A=0 To 15
- Rain(0,A)=$2204
- Next
- Extension_8_1330 0,-64
- Rainbow 0,0,Y Hard(-1),260
- BP=1 : YP=0
- Repeat
- Gosub PULET
- If Deek($DFF004) and $8000 Then Wait Vbl
- Gosub PULET
- Screen Offset 0,0,YPOS+24
- Wait Vbl
- Add YPOS,1,0 To 287
- Until BP=0
- Screen Offset 0,0,YPOS+24
- Rainbow Del : View
- Repeat
- Multi Wait
- Until Inkey$<>""
- Fade 2 : Wait 32
- Screen Close 0
- Pop Proc
- PULET:
- YP=YPOS and $FFF0
- If(YPOS and 15)=0 Then LP=0
- If LP=0
- XP=184
- For A=BP To Len(T$)
- Exit If Mid$(T$,A,1)="$"
- Add XP,-8
- Next
- Inc LP : Return
- End If
- If LP=1
- Ink 0 : Bar 0,YP To 351,YP+15
- Inc LP : Return
- End If
- If LP=2
- Ink 0 : Bar 0,YP+288 To 351,YP+303
- Inc LP : Return
- End If
- If LP=3
- P=Asc(Mid$(T$,BP,1))
- Add BP,1,0 To Len(T$)
- If P=36
- LP=-1
- Else
- Put Block P-31,XP,YP
- Put Block P-31,XP,YP+288
- Add XP,16
- End If
- End If
- Return
- End Proc
- Procedure LETZOOM[L,X,Y,Z]
- Areg(0)=Start(13)+L*352
- Dreg(0)=Z : Dreg(1)=Z
- Dreg(2)=X-(Z+1)/2
- Dreg(3)=Y-(Z+1)/2
- Call Start(7)
- End Proc